/*MyPhotoIndex Free Photo Organizer <www.myphotoindex.com>
  Copyright (C) <2006-2009>  <Asaf Yarkoni asaf@yarkoni.net>

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;

namespace MyPhotoIndex.Utilities
{
    public sealed class ThumbnailUtilities
    {
        private ThumbnailUtilities()
        {
        }

        public static Image ThumbnailFromByteArray(Byte[] imageData)
        {
            if (imageData == null)
            {
                return null;
            }

            Image thumbnail;
            try
            {
                using (MemoryStream ms = new MemoryStream(imageData, 0, imageData.Length))
                {
                 //   ms.Write(imageData, 0, imageData.Length);
                    using (Image image = Image.FromStream(ms, false, false))
                    {
                        thumbnail = image.Clone() as Image;
                    }
                }
            }
            catch(Exception ex)
            {
                Logger.Log(ex);
                return null;
            }

            return thumbnail;
        }

        public static byte[] ThumbnailToByteArray(Image thumbnail)
        {
            if (thumbnail == null)
            {
                return null;
            }

            byte[] ret;

            using (MemoryStream ms = new MemoryStream())
            {
                using (Image image = new Bitmap(thumbnail))
                {
                    image.Save(ms, ImageFormat.Jpeg);
                }

                ret = ms.ToArray();
            }

            return ret;
        } 
    }
}
